/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

密钥管理服务
基于硬件保护密钥的安全数据托管服务

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef KmsClient_h
#define KmsClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKKms/KmsApiModel.h>

@interface KmsClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    getPublicKey sync request
    @param getPublicKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getPublicKeyResponse` the request response data model
    */
    -(NSDictionary*) getPublicKeySyncWithRequest:(KmsGetPublicKeyRequest*) getPublicKeyRequest;

    -(void)getPublicKeyAsyncWithRequest:(KmsGetPublicKeyRequest*) getPublicKeyRequest
    completionHandler:(void(^)(int statusCode,KmsGetPublicKeyResponse* _Nullable getPublicKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeKeyList sync request
    @param describeKeyListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeKeyListResponse` the request response data model
    */
    -(NSDictionary*) describeKeyListSyncWithRequest:(KmsDescribeKeyListRequest*) describeKeyListRequest;

    -(void)describeKeyListAsyncWithRequest:(KmsDescribeKeyListRequest*) describeKeyListRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeKeyListResponse* _Nullable describeKeyListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateSecretVersion sync request
    @param updateSecretVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateSecretVersionResponse` the request response data model
    */
    -(NSDictionary*) updateSecretVersionSyncWithRequest:(KmsUpdateSecretVersionRequest*) updateSecretVersionRequest;

    -(void)updateSecretVersionAsyncWithRequest:(KmsUpdateSecretVersionRequest*) updateSecretVersionRequest
    completionHandler:(void(^)(int statusCode,KmsUpdateSecretVersionResponse* _Nullable updateSecretVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    generateDataKey sync request
    @param generateDataKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `generateDataKeyResponse` the request response data model
    */
    -(NSDictionary*) generateDataKeySyncWithRequest:(KmsGenerateDataKeyRequest*) generateDataKeyRequest;

    -(void)generateDataKeyAsyncWithRequest:(KmsGenerateDataKeyRequest*) generateDataKeyRequest
    completionHandler:(void(^)(int statusCode,KmsGenerateDataKeyResponse* _Nullable generateDataKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createSecret sync request
    @param createSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createSecretResponse` the request response data model
    */
    -(NSDictionary*) createSecretSyncWithRequest:(KmsCreateSecretRequest*) createSecretRequest;

    -(void)createSecretAsyncWithRequest:(KmsCreateSecretRequest*) createSecretRequest
    completionHandler:(void(^)(int statusCode,KmsCreateSecretResponse* _Nullable createSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    enableKeyVersion sync request
    @param enableKeyVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableKeyVersionResponse` the request response data model
    */
    -(NSDictionary*) enableKeyVersionSyncWithRequest:(KmsEnableKeyVersionRequest*) enableKeyVersionRequest;

    -(void)enableKeyVersionAsyncWithRequest:(KmsEnableKeyVersionRequest*) enableKeyVersionRequest
    completionHandler:(void(^)(int statusCode,KmsEnableKeyVersionResponse* _Nullable enableKeyVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    encrypt sync request
    @param encryptRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `encryptResponse` the request response data model
    */
    -(NSDictionary*) encryptSyncWithRequest:(KmsEncryptRequest*) encryptRequest;

    -(void)encryptAsyncWithRequest:(KmsEncryptRequest*) encryptRequest
    completionHandler:(void(^)(int statusCode,KmsEncryptResponse* _Nullable encryptResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    enableKey sync request
    @param enableKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableKeyResponse` the request response data model
    */
    -(NSDictionary*) enableKeySyncWithRequest:(KmsEnableKeyRequest*) enableKeyRequest;

    -(void)enableKeyAsyncWithRequest:(KmsEnableKeyRequest*) enableKeyRequest
    completionHandler:(void(^)(int statusCode,KmsEnableKeyResponse* _Nullable enableKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    cancelKeyDeletion sync request
    @param cancelKeyDeletionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `cancelKeyDeletionResponse` the request response data model
    */
    -(NSDictionary*) cancelKeyDeletionSyncWithRequest:(KmsCancelKeyDeletionRequest*) cancelKeyDeletionRequest;

    -(void)cancelKeyDeletionAsyncWithRequest:(KmsCancelKeyDeletionRequest*) cancelKeyDeletionRequest
    completionHandler:(void(^)(int statusCode,KmsCancelKeyDeletionResponse* _Nullable cancelKeyDeletionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteSecret sync request
    @param deleteSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSecretResponse` the request response data model
    */
    -(NSDictionary*) deleteSecretSyncWithRequest:(KmsDeleteSecretRequest*) deleteSecretRequest;

    -(void)deleteSecretAsyncWithRequest:(KmsDeleteSecretRequest*) deleteSecretRequest
    completionHandler:(void(^)(int statusCode,KmsDeleteSecretResponse* _Nullable deleteSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disableSecret sync request
    @param disableSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableSecretResponse` the request response data model
    */
    -(NSDictionary*) disableSecretSyncWithRequest:(KmsDisableSecretRequest*) disableSecretRequest;

    -(void)disableSecretAsyncWithRequest:(KmsDisableSecretRequest*) disableSecretRequest
    completionHandler:(void(^)(int statusCode,KmsDisableSecretResponse* _Nullable disableSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disableSecretVersion sync request
    @param disableSecretVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableSecretVersionResponse` the request response data model
    */
    -(NSDictionary*) disableSecretVersionSyncWithRequest:(KmsDisableSecretVersionRequest*) disableSecretVersionRequest;

    -(void)disableSecretVersionAsyncWithRequest:(KmsDisableSecretVersionRequest*) disableSecretVersionRequest
    completionHandler:(void(^)(int statusCode,KmsDisableSecretVersionResponse* _Nullable disableSecretVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createKey sync request
    @param createKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createKeyResponse` the request response data model
    */
    -(NSDictionary*) createKeySyncWithRequest:(KmsCreateKeyRequest*) createKeyRequest;

    -(void)createKeyAsyncWithRequest:(KmsCreateKeyRequest*) createKeyRequest
    completionHandler:(void(^)(int statusCode,KmsCreateKeyResponse* _Nullable createKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateKeyDescription sync request
    @param updateKeyDescriptionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateKeyDescriptionResponse` the request response data model
    */
    -(NSDictionary*) updateKeyDescriptionSyncWithRequest:(KmsUpdateKeyDescriptionRequest*) updateKeyDescriptionRequest;

    -(void)updateKeyDescriptionAsyncWithRequest:(KmsUpdateKeyDescriptionRequest*) updateKeyDescriptionRequest
    completionHandler:(void(^)(int statusCode,KmsUpdateKeyDescriptionResponse* _Nullable updateKeyDescriptionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    sign sync request
    @param signRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `signResponse` the request response data model
    */
    -(NSDictionary*) signSyncWithRequest:(KmsSignRequest*) signRequest;

    -(void)signAsyncWithRequest:(KmsSignRequest*) signRequest
    completionHandler:(void(^)(int statusCode,KmsSignResponse* _Nullable signResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSecretVersionList sync request
    @param describeSecretVersionListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSecretVersionListResponse` the request response data model
    */
    -(NSDictionary*) describeSecretVersionListSyncWithRequest:(KmsDescribeSecretVersionListRequest*) describeSecretVersionListRequest;

    -(void)describeSecretVersionListAsyncWithRequest:(KmsDescribeSecretVersionListRequest*) describeSecretVersionListRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeSecretVersionListResponse* _Nullable describeSecretVersionListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    exportSecret sync request
    @param exportSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `exportSecretResponse` the request response data model
    */
    -(NSDictionary*) exportSecretSyncWithRequest:(KmsExportSecretRequest*) exportSecretRequest;

    -(void)exportSecretAsyncWithRequest:(KmsExportSecretRequest*) exportSecretRequest
    completionHandler:(void(^)(int statusCode,KmsExportSecretResponse* _Nullable exportSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    validate sync request
    @param validateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `validateResponse` the request response data model
    */
    -(NSDictionary*) validateSyncWithRequest:(KmsValidateRequest*) validateRequest;

    -(void)validateAsyncWithRequest:(KmsValidateRequest*) validateRequest
    completionHandler:(void(^)(int statusCode,KmsValidateResponse* _Nullable validateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteSecretVersion sync request
    @param deleteSecretVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteSecretVersionResponse` the request response data model
    */
    -(NSDictionary*) deleteSecretVersionSyncWithRequest:(KmsDeleteSecretVersionRequest*) deleteSecretVersionRequest;

    -(void)deleteSecretVersionAsyncWithRequest:(KmsDeleteSecretVersionRequest*) deleteSecretVersionRequest
    completionHandler:(void(^)(int statusCode,KmsDeleteSecretVersionResponse* _Nullable deleteSecretVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeKey sync request
    @param describeKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeKeyResponse` the request response data model
    */
    -(NSDictionary*) describeKeySyncWithRequest:(KmsDescribeKeyRequest*) describeKeyRequest;

    -(void)describeKeyAsyncWithRequest:(KmsDescribeKeyRequest*) describeKeyRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeKeyResponse* _Nullable describeKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    importSecret sync request
    @param importSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `importSecretResponse` the request response data model
    */
    -(NSDictionary*) importSecretSyncWithRequest:(KmsImportSecretRequest*) importSecretRequest;

    -(void)importSecretAsyncWithRequest:(KmsImportSecretRequest*) importSecretRequest
    completionHandler:(void(^)(int statusCode,KmsImportSecretResponse* _Nullable importSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    scheduleKeyDeletion sync request
    @param scheduleKeyDeletionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `scheduleKeyDeletionResponse` the request response data model
    */
    -(NSDictionary*) scheduleKeyDeletionSyncWithRequest:(KmsScheduleKeyDeletionRequest*) scheduleKeyDeletionRequest;

    -(void)scheduleKeyDeletionAsyncWithRequest:(KmsScheduleKeyDeletionRequest*) scheduleKeyDeletionRequest
    completionHandler:(void(^)(int statusCode,KmsScheduleKeyDeletionResponse* _Nullable scheduleKeyDeletionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    keyRotation sync request
    @param keyRotationRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `keyRotationResponse` the request response data model
    */
    -(NSDictionary*) keyRotationSyncWithRequest:(KmsKeyRotationRequest*) keyRotationRequest;

    -(void)keyRotationAsyncWithRequest:(KmsKeyRotationRequest*) keyRotationRequest
    completionHandler:(void(^)(int statusCode,KmsKeyRotationResponse* _Nullable keyRotationResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSecretList sync request
    @param describeSecretListRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSecretListResponse` the request response data model
    */
    -(NSDictionary*) describeSecretListSyncWithRequest:(KmsDescribeSecretListRequest*) describeSecretListRequest;

    -(void)describeSecretListAsyncWithRequest:(KmsDescribeSecretListRequest*) describeSecretListRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeSecretListResponse* _Nullable describeSecretListResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSecretVersionInfo sync request
    @param describeSecretVersionInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSecretVersionInfoResponse` the request response data model
    */
    -(NSDictionary*) describeSecretVersionInfoSyncWithRequest:(KmsDescribeSecretVersionInfoRequest*) describeSecretVersionInfoRequest;

    -(void)describeSecretVersionInfoAsyncWithRequest:(KmsDescribeSecretVersionInfoRequest*) describeSecretVersionInfoRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeSecretVersionInfoResponse* _Nullable describeSecretVersionInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disableKeyVersion sync request
    @param disableKeyVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableKeyVersionResponse` the request response data model
    */
    -(NSDictionary*) disableKeyVersionSyncWithRequest:(KmsDisableKeyVersionRequest*) disableKeyVersionRequest;

    -(void)disableKeyVersionAsyncWithRequest:(KmsDisableKeyVersionRequest*) disableKeyVersionRequest
    completionHandler:(void(^)(int statusCode,KmsDisableKeyVersionResponse* _Nullable disableKeyVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    decrypt sync request
    @param decryptRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `decryptResponse` the request response data model
    */
    -(NSDictionary*) decryptSyncWithRequest:(KmsDecryptRequest*) decryptRequest;

    -(void)decryptAsyncWithRequest:(KmsDecryptRequest*) decryptRequest
    completionHandler:(void(^)(int statusCode,KmsDecryptResponse* _Nullable decryptResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    enableSecret sync request
    @param enableSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableSecretResponse` the request response data model
    */
    -(NSDictionary*) enableSecretSyncWithRequest:(KmsEnableSecretRequest*) enableSecretRequest;

    -(void)enableSecretAsyncWithRequest:(KmsEnableSecretRequest*) enableSecretRequest
    completionHandler:(void(^)(int statusCode,KmsEnableSecretResponse* _Nullable enableSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disableKey sync request
    @param disableKeyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableKeyResponse` the request response data model
    */
    -(NSDictionary*) disableKeySyncWithRequest:(KmsDisableKeyRequest*) disableKeyRequest;

    -(void)disableKeyAsyncWithRequest:(KmsDisableKeyRequest*) disableKeyRequest
    completionHandler:(void(^)(int statusCode,KmsDisableKeyResponse* _Nullable disableKeyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    enableSecretVersion sync request
    @param enableSecretVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableSecretVersionResponse` the request response data model
    */
    -(NSDictionary*) enableSecretVersionSyncWithRequest:(KmsEnableSecretVersionRequest*) enableSecretVersionRequest;

    -(void)enableSecretVersionAsyncWithRequest:(KmsEnableSecretVersionRequest*) enableSecretVersionRequest
    completionHandler:(void(^)(int statusCode,KmsEnableSecretVersionResponse* _Nullable enableSecretVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    scheduleKeyVersionDeletion sync request
    @param scheduleKeyVersionDeletionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `scheduleKeyVersionDeletionResponse` the request response data model
    */
    -(NSDictionary*) scheduleKeyVersionDeletionSyncWithRequest:(KmsScheduleKeyVersionDeletionRequest*) scheduleKeyVersionDeletionRequest;

    -(void)scheduleKeyVersionDeletionAsyncWithRequest:(KmsScheduleKeyVersionDeletionRequest*) scheduleKeyVersionDeletionRequest
    completionHandler:(void(^)(int statusCode,KmsScheduleKeyVersionDeletionResponse* _Nullable scheduleKeyVersionDeletionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createSecretVersion sync request
    @param createSecretVersionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createSecretVersionResponse` the request response data model
    */
    -(NSDictionary*) createSecretVersionSyncWithRequest:(KmsCreateSecretVersionRequest*) createSecretVersionRequest;

    -(void)createSecretVersionAsyncWithRequest:(KmsCreateSecretVersionRequest*) createSecretVersionRequest
    completionHandler:(void(^)(int statusCode,KmsCreateSecretVersionResponse* _Nullable createSecretVersionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeKeyDetail sync request
    @param describeKeyDetailRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeKeyDetailResponse` the request response data model
    */
    -(NSDictionary*) describeKeyDetailSyncWithRequest:(KmsDescribeKeyDetailRequest*) describeKeyDetailRequest;

    -(void)describeKeyDetailAsyncWithRequest:(KmsDescribeKeyDetailRequest*) describeKeyDetailRequest
    completionHandler:(void(^)(int statusCode,KmsDescribeKeyDetailResponse* _Nullable describeKeyDetailResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateSecret sync request
    @param updateSecretRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateSecretResponse` the request response data model
    */
    -(NSDictionary*) updateSecretSyncWithRequest:(KmsUpdateSecretRequest*) updateSecretRequest;

    -(void)updateSecretAsyncWithRequest:(KmsUpdateSecretRequest*) updateSecretRequest
    completionHandler:(void(^)(int statusCode,KmsUpdateSecretResponse* _Nullable updateSecretResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    cancelKeyVersionDeletion sync request
    @param cancelKeyVersionDeletionRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `cancelKeyVersionDeletionResponse` the request response data model
    */
    -(NSDictionary*) cancelKeyVersionDeletionSyncWithRequest:(KmsCancelKeyVersionDeletionRequest*) cancelKeyVersionDeletionRequest;

    -(void)cancelKeyVersionDeletionAsyncWithRequest:(KmsCancelKeyVersionDeletionRequest*) cancelKeyVersionDeletionRequest
    completionHandler:(void(^)(int statusCode,KmsCancelKeyVersionDeletionResponse* _Nullable cancelKeyVersionDeletionResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    kms common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) kmsCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)kmsCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* KmsClient_h */
